苏黎世联邦理工用 Taichi 做了啥?
物理仿真计算量都挺大,需要并行计算。但是并行编程的门槛还是蛮高的。课上的学生很少掌握 GPU 编程(比如 CUDA) ,用 C++ 的话也有较高的门槛。OpenMP 之类的工具也有一些可移植性、性能(和 GPU 比起来)的问题。
语言/框架需要自带一些周边组件,比如说 3D 可视化,这样才能比较容易地显示、查看结果。因为课程主要内容是物理仿真而不是可视化,大家都不希望自己写一套 OpenGL 之类的框架来进行可视化。
学生 3 人组成一组合作,因此必须考虑到语言的可移植性。用 CUDA 之类的工具可能有额外的问题:合作伙伴用的是 Mac 或者 AMD 的 GPU,导致自己写的程序到了别的组员那里无法运行,弄不好友谊的小船就这么翻了。C++ 对于特殊硬件的需求小很多,但是也面临着跨平台编译的种种麻烦。
Taichi 与 Python 无缝链接,语法相近,而几乎所有同学都掌握 Python。这意味着 Taichi 更容易学习,更加直观。同时,Taichi 拥有与 CUDA 相当的性能。
Taichi 的 GGUI 系统使得 3D 渲染非常轻松。
Taichi 非常可移植,如果你的程序编写以后可以比较容易地在 NVIDIA/AMD/Intel 的 GPU、CPU 上运行,就不用担心队友跑不起来,伤害感情...
Taichi 有一个活跃的社区,并且用户提供了很多示例代码,便于学习。
...
Syntax error 质量依然是大家很在乎的 feature,不过根据这次调查,用户体验已经比之前好很多了,但是还需要进一步提升。
编译速度需要提升。一个简单的方式是 Cache,需要实现 IR serialization/deserialization。学生用户往往会有快速迭代的需求,每次改一点点程序,都要等几秒他们还是体验不太好的。当然这一点社区已经在实现了,相关 issue 可复制文末链接查看 ⁸。
不确定 Taichi 和 CUDA 等语言比起来性能如何,需要更加完善的性能评测数据。我们在 1.0 发布的同时也公布了非常系统的性能评测数据 ⁹。Taichi 通常与 CUDA 拥有差不多的性能,但是有时也会更快或者更慢。当然,代码一般都是短不少的。
可视化功能 (GGUI etc.) 可以继续加强,需要画线等功能。也有同学抱怨 v0.8 版本的 Taichi 在 Mac 上不支持 GGUI,造成了一些不便。我们在 v0.9 的时候已经解决了这个问题。
单线程模式(serial mode):有的时候顶层的 for 循环不希望被并行。之前的解决方案是在 for loop 外面套一个 “if 1:”,但是看着有点丑。目前这一点已经系统解决 ¹⁰。
二阶导数。在计划之中了...
(还有很多很多我们想解决的问题,欢迎大家加入社区 ¹¹一起开发!)
1.https://cgl.ethz.ch/2.https://cgl.ethz.ch/teaching/simulation21/fame.php3.https://github.com/taichi-dev/taichi/releases/tag/v1.0.04.https://cgl.ethz.ch/teaching/simulation21/fame.php5.https://github.com/taichi-dev/taichi/issues/37646.https://github.com/taichi-dev/taichi/pull/37907.https://github.com/ethz-pbs21/SandyFluid
8.https://github.com/taichi-dev/taichi/issues/44019.https://github.com/taichi-dev/taichi_benchmark10.https://github.com/taichi-dev/taichi/issues/442111.https://github.com/taichi-dev/taichi12.https://docs.taichi.graphics/lang/articles/sparse_matrix#sparse-linear-solver
部分来源于网络如有侵权请联系我们 | 图片
-推荐阅读-